<template>
  <div>
    <slot></slot>
  </div>
</template>
<script>
export default {
  name: 'LgForm',
  provide(){
    return {
      form: this  // form指向form中的所有元素，以供子组件获取
    }
  },
  props: {
    model: {
      type: Object
    },
    rules:{
      type: Object
    }
  },
  methods:{
    validate(cb){
      // 将过滤出带有 prop 的 formitem，执行formitem的验证结果作为task任务列表
      const tasks = this.$children.filter(child=>child.prop).map(child=>child.validate())
      // 异步执行validate，当全部的form item验证完后才执行回调函数
      console.log('form validate',{tasks})
      Promise.all(tasks)
      .then(()=>cb(true))
      .catch(()=>cb(false))
    }
  }
}
</script>